# OpenWrt应用程序开机和崩溃时自动启动 首先介绍下OpenWrt的启动方式 - SysV风格 - procd风格 ## SysV风格的init启动 ### 示例如下 ```bash #!/bin/sh /etc/rc.common # Example script # Copyright (C) 2007 OpenWrt.org #启动顺序 自动执行/etc/rc.d/的S开头的软链接 enable 和 disable 可以自动帮你创建对应的带序号的软链. START=80 STOP=85 APP=wim-roam SERVICE_WRITE_PID=1 SERVICE_DAEMONIZE=1 start() { echo "start $APP" service_start /usr/sbin/$APP #&> /dev/null } stop() { service_stop /usr/sbin/$APP #&> /dev/null } restart() { stop start } ``` ### SysV风格的init script方法有 ```bash start # 启动服务 必须有 stop # 停止服务 restart # 重启服务 reload # 重新载入配置文件, 如果失败则重启 enable # 启用开机自启动, 实际上是在/etc/rc.d/下创建S和K开头的软链 disable # 禁用开机自启动, 实际上是删除/etc/rc.d/下对应的软链 boot # 当存在boot()方法时, 系统启动时会调用boot()而不是start() ``` ### 自定义服务方法 使用EXTRA_COMMANDS和EXTRA_HELP设置自定义的服务方法 ```bash EXTRA_COMMANDS="custom" EXTRA_HELP="custom Help for the custom command" custom() { echo "custom command" # do your custom stuff } ``` 多个自定义方法的添加 ```bash EXTRA_COMMANDS="custom1 custom2 custom3" EXTRA_HELP=<